<?php
// 编码声明
header("Content-Type:text/html;charset=utf-8");

//封装的函数库

/**
    消息提醒
    @param string $msg 提醒的内容
    @param string $url 跳转的地址，如果没给，就默认返回上一页
*/
function notice($msg = '', $url = '')
{
    if(empty($url)) //没有跳转地址 返回上一个界面
    {
        echo "<script>alert('$msg');history.go(-1);</script>";
    }else //有地址，就跳转到指定的地址去
    {
        echo "<script>alert('$msg');location.href='$url';</script>";
    }
}

/**
 * 递归删除文件夹
 * @param string $dir 路径
 * @return boolean 成功删除返回true 失败返回false
 */
function DelDir($dir = '')
{
    //读取要删除的文件夹路径
    $list = scandir($dir);

    //已经将目录中的文件全部删除完了，然后只需要进行最后一步删除外层的文件夹
    foreach($list as $item)
    {
        if($item == "." || $item == "..")
        {
            continue;
        }

        //拼接子文件的完整路径
        $cur = $dir.'/'.$item;

        //如果是文件
        if(is_file($cur))
        {
            @unlink($cur);
        }
        //如果是文件夹
        if(is_dir($cur))
        {
            DelDir($cur);
        }
    }

    //删除掉文件夹
    return rmdir($dir);
}

/**
 * 递归统计文件夹的大小
 * @param * $dir
 * @return number 返回的是统计的大小（以字节为单位的大小）
 */
function DirSize($dir = '')
{

}

/**
 * 文件大小单位换算
 * @param * $size
 * @return *
 */
function SizeUnit($size = 0)
{
    //字节(B) KB MB GB TB  1024
    return '34.5KB';
}


/**
 * 文件上传
 * @param string $input 表单中input[file]name名字
 * @param string $path 文件保存的路径 
 * @return array [result=>true|false, msg=>'上传成功或失败的原因']
 */
function UploadFile($input = 'file', $path = '')
{
    //定义一个返回值
    $success = ['result' => false, 'msg' => '', 'data' => ''];

    //获取文件对象
    $file = $_FILES[$input];

    //判断是否有上传出错
    if($file['error'] > 0)
    {
        switch($file['error'])
        {
            case 1:
                $success['msg'] = '文件上传大小超过了服务器的限制';
                break;
            case 2:
                $success['msg'] = '文件上传超过了表单大小的限制';
                break;
            case 3:
                $success['msg'] = '网络中断';
                break;
            case 4:
                $success['msg'] = '无文件上传';
                break;
            default:
                $success['msg'] = '未知错误';
        }

        return $success;
    }

    //给文件重新起名字
    $ext = pathinfo($file['name'], PATHINFO_EXTENSION);

    //文件名
    $name = pathinfo($file['name'], PATHINFO_FILENAME);

    //新的文件名格式：文件名_时间戳_随机数字.jpg
    $time = time();
    $rand = mt_rand(1111, 9999);
    $filename = "{$name}_{$time}_{$rand}.$ext";

    //如果目录不存在，就直接失败
    if(!is_dir($path))
    {
        $success['msg'] = '保存目录不存在';
        return $success;
    }

    //拼接路径
    $filename = $path.'/'.$filename;

    //判断文件是否通过http post上传
    if(!is_uploaded_file($file['tmp_name']))
    {
        $success['msg'] = '文件上传方式不合法';
        return $success;
    }
    
    //移动文件 临时目录的文件  移动到 我们制定的目录中
    if(move_uploaded_file($file['tmp_name'], $filename))
    {
        $success['result'] = true;
        $success['msg'] = '文件上传成功';
        $success['data'] = $filename;
    }else
    {
        $success['msg'] = '文件上传失败';
    }

    return $success;
}


/**
 * 多文件上传
 * @param string $input 表单中input[file]name名字
 * @param string $path 文件保存的路径 
 * @return array [result=>true|false, msg=>'上传成功或失败的原因']
 */
function UploadAll($input = 'file', $path = '')
{

}